home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / signal.arc / SAMPSI.C < prev    next >
Text File  |  1985-07-26  |  1KB  |  63 lines

  1. #include <stdio.h>
  2. #include <signal.h>
  3.  
  4. int     brk     = 0;
  5.  
  6. char *divstack;
  7.  
  8. int save0[2];
  9. int save23[2];
  10.  
  11.  
  12. ctlbrk()
  13. {
  14.         brk = 1;
  15.         cputs("\r\n**BREAK**\r\n");
  16. }
  17. divzero()
  18. {
  19.         char *p;
  20.  
  21.         struct intinfo *p1;
  22.         struct intinfo2 p2;
  23.  
  24.  
  25.         p = (divstack + 100 - OFFSET_TO_REGS);
  26.         p1 = p;
  27.  
  28.         peek(p1->Ss,p1->Sp,&p2,sizeof(struct intinfo2) );
  29.  
  30.         printf("\r\n *** Divide by Zero at: %04x:%04x ***\r\n",
  31.                 p2.Cs,p2.Ip);
  32.  
  33.         poke(0,0,&save0,4);
  34.         poke(0,4*0x23,&save23,4);
  35.         exit(1);
  36. }
  37. main()
  38. {
  39.         int i;
  40.         int j=0;
  41.  
  42.  
  43.  
  44.         peek(0,0,&save0,4);
  45.         peek(0,4*0x23,&save23,4);
  46.  
  47.         signal(ctlbrk,100,0x23);
  48.         divstack = signal(divzero,100,0x0);
  49.  
  50.  
  51.         for(i=0;! brk ;i++) {
  52.                             printf("Num=%d\n",i);
  53.                             }
  54.  
  55.         brk = 0;
  56.  
  57.         i=j/0;  /* This should generate a divide by zero error */
  58.  
  59.         /* Should never reach here..*/
  60.  
  61.         printf("Woops\n");
  62. }
  63.